Circuit designs for integrated circuits (ICs) can be generated using a variety of techniques. In some examples, designers can write register-transfer level (RTL) code program-language code, or a combination thereof to design a circuit for implementation in a target IC device. The target IC device can be a programmable IC, such as a field programmable gate array (FPGA), a mask-programmable IC, such as an application specific integrated circuit (ASIC), or the like. During circuit design, designers can make use of pre-designed circuits available from logic libraries provided for a particular target IC device. Such pre-design circuits are referred to as “Intellectual Property (IP) cores” or just “cores”. The cores are generally tested and debugged blocks of logic that can be used for specific purposes to simplify implementation of a circuit in a particular target IC device.
Some cores are static. A designer can select a static core, such as a counter, from a library for use in a given circuit design. Although the counter may not be customizable for a particular designer's needs, several counters may be available in the library and a designer can select the appropriate counter for a particular design. Other cores are parameterized cores. Parameterized cores can be specifically configured for a designer's particular needs by defining parameter values. The parameter values translate into RTL parameters, which customize the logic and functionality of the core. For example, a designer can select a parameterized counter from a library having a width parameter. When the designer creates an instance of the counter, the designer can define a value for the width parameter (e.g., a 4-bit counter, an 8-bit counter, etc.).
Some parameterized cores can include a large number of parameters, some of which are dependent on others. In some cases, a designer may not be familiar with all the parameters of a given core, particularly when some cores define parameters differently than other cores. A designer may find it cumbersome to modify each and every parameter of a parameterized core. For some parameterized cores, a designer needs to understand the purpose of several parameters, which may not have a standard definition, and be able to identify a good combination of parameter values. A designer may have to resort to testing of different sets of parameter values, particularly when some parameters are dependent on other parameters, before finding an appropriate configuration for the particular circuit design and target IC device.